From: David Härdeman Date: Wed, 24 Sep 2025 14:08:35 +0000 (+0200) Subject: dhcpv4: update dhcpv4_msg_to_string() X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22http:/www.crowdsec.net/%22/%22https:/collectd.org/%22http:/www.crowdsec.net/%22?a=commitdiff_plain;h=11c8ef57da64f19e9d3e1597293f11f704939f15;p=project%2Fodhcpd.git dhcpv4: update dhcpv4_msg_to_string() Simplify and make it cover all currently known message types. Signed-off-by: David Härdeman Link: https://github.com/openwrt/odhcpd/pull/266 Signed-off-by: Álvaro Fernández Rojas --- diff --git a/src/dhcpv4.c b/src/dhcpv4.c index 25fcdb6..2dd4b3a 100644 --- a/src/dhcpv4.c +++ b/src/dhcpv4.c @@ -105,30 +105,32 @@ static bool leases_require_fr(struct interface *iface, struct odhcpd_ipaddr *add return fr_ip ? true : false; } -static char *dhcpv4_msg_to_string(uint8_t reqmsg) +static const char *dhcpv4_msg_to_string(uint8_t reqmsg) { - switch (reqmsg) { - case (DHCPV4_MSG_DISCOVER): - return "DHCPV4_MSG_DISCOVER"; - case (DHCPV4_MSG_OFFER): - return "DHCPV4_MSG_OFFER"; - case (DHCPV4_MSG_REQUEST): - return "DHCPV4_MSG_REQUEST"; - case (DHCPV4_MSG_DECLINE): - return "DHCPV4_MSG_DECLINE"; - case (DHCPV4_MSG_ACK): - return "DHCPV4_MSG_ACK"; - case (DHCPV4_MSG_NAK): - return "DHCPV4_MSG_NAK"; - case (DHCPV4_MSG_RELEASE): - return "DHCPV4_MSG_RELEASE"; - case (DHCPV4_MSG_INFORM): - return "DHCPV4_MSG_INFORM"; - case (DHCPV4_MSG_FORCERENEW): - return "DHCPV4_MSG_FORCERENEW"; - default: + static const char *dhcpv4_msg_names[] = { + [DHCPV4_MSG_DISCOVER] = "DHCPV4_MSG_DISCOVER", + [DHCPV4_MSG_OFFER] = "DHCPV4_MSG_OFFER", + [DHCPV4_MSG_REQUEST] = "DHCPV4_MSG_REQUEST", + [DHCPV4_MSG_DECLINE] = "DHCPV4_MSG_DECLINE", + [DHCPV4_MSG_ACK] = "DHCPV4_MSG_ACK", + [DHCPV4_MSG_NAK] = "DHCPV4_MSG_NAK", + [DHCPV4_MSG_RELEASE] = "DHCPV4_MSG_RELEASE", + [DHCPV4_MSG_INFORM] = "DHCPV4_MSG_INFORM", + [DHCPV4_MSG_FORCERENEW] = "DHCPV4_MSG_FORCERENEW", + [DHCPV4_MSG_LEASEQUERY] = "DHCPV4_MSG_LEASEQUERY", + [DHCPV4_MSG_LEASEUNASSIGNED] = "DHCPV4_MSG_LEASEUNASSIGNED", + [DHCPV4_MSG_LEASEUNKNOWN] = "DHCPV4_MSG_LEASEUNKNOWN", + [DHCPV4_MSG_LEASEACTIVE] = "DHCPV4_MSG_LEASEACTIVE", + [DHCPV4_MSG_BULKLEASEQUERY] = "DHCPV4_MSG_BULKLEASEQUERY", + [DHCPV4_MSG_LEASEQUERYDONE] = "DHCPV4_MSG_LEASEQUERYDONE", + [DHCPV4_MSG_ACTIVELEASEQUERY] = "DHCPV4_MSG_ACTIVELEASEQUERY", + [DHCPV4_MSG_LEASEQUERYSTATUS] = "DHCPV4_MSG_LEASEQUERYSTATUS", + [DHCPV4_MSG_TLS] = "DHCPV4_MSG_TLS", + }; + + if (reqmsg >= ARRAY_SIZE(dhcpv4_msg_names)) return "UNKNOWN"; - } + return dhcpv4_msg_names[reqmsg]; } static void dhcpv4_put(struct dhcpv4_message *msg, uint8_t **cookie, diff --git a/src/dhcpv4.h b/src/dhcpv4.h index d54aedb..dd3fc51 100644 --- a/src/dhcpv4.h +++ b/src/dhcpv4.h @@ -29,16 +29,26 @@ enum dhcpv4_op { DHCPV4_BOOTREPLY = 2 }; +// https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml#message-type-53 enum dhcpv4_msg { - DHCPV4_MSG_DISCOVER = 1, - DHCPV4_MSG_OFFER = 2, - DHCPV4_MSG_REQUEST = 3, - DHCPV4_MSG_DECLINE = 4, - DHCPV4_MSG_ACK = 5, - DHCPV4_MSG_NAK = 6, - DHCPV4_MSG_RELEASE = 7, - DHCPV4_MSG_INFORM = 8, - DHCPV4_MSG_FORCERENEW = 9, + DHCPV4_MSG_DISCOVER = 1, // RFC2132 + DHCPV4_MSG_OFFER = 2, // RFC2132 + DHCPV4_MSG_REQUEST = 3, // RFC2132 + DHCPV4_MSG_DECLINE = 4, // RFC2132 + DHCPV4_MSG_ACK = 5, // RFC2132 + DHCPV4_MSG_NAK = 6, // RFC2132 + DHCPV4_MSG_RELEASE = 7, // RFC2132 + DHCPV4_MSG_INFORM = 8, // RFC2132 + DHCPV4_MSG_FORCERENEW = 9, // RFC3203 + DHCPV4_MSG_LEASEQUERY = 10, // RFC4388 + DHCPV4_MSG_LEASEUNASSIGNED = 11, // RFC4388 + DHCPV4_MSG_LEASEUNKNOWN = 12, // RFC4388 + DHCPV4_MSG_LEASEACTIVE = 13, // RFC4388 + DHCPV4_MSG_BULKLEASEQUERY = 14, // RFC6926 + DHCPV4_MSG_LEASEQUERYDONE = 15, // RFC6926 + DHCPV4_MSG_ACTIVELEASEQUERY = 16, // RFC7724 + DHCPV4_MSG_LEASEQUERYSTATUS = 17, // RFC7724 + DHCPV4_MSG_TLS = 18, // RFC7724 }; enum dhcpv4_opt {